﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace System.Collections.ObjectModel
{
    [NonScript]
    public class ReadOnlyCollection<T> : IList<T>, ICollection<T>, IList, ICollection, IReadOnlyList<T>, IEnumerable<T>, IEnumerable
    {
        public int Count
        {
            get { return 0; }
        }

        public bool IsReadOnly
        {
            get { return false; }
        }

        public void Add(T item)
        {
        }

        public void Clear()
        {
        }

        public bool Contains(T item)
        {
            return false;
        }

        public void CopyTo(T[] array, int arrayIndex)
        {
        }

        public bool Remove(T item)
        {
            return false;
        }

        public T this[int index]
        {
            get { return default(T); }
            set { }
        }

        public int IndexOf(T item)
        {
            return 0;
        }

        public void Insert(int index, T item)
        {
        }

        public void RemoveAt(int index)
        {
        }


        public object SyncRoot
        {
            get { return 0; }
        }

        public bool IsSynchronized
        {
            get { return false; }
        }

        public void CopyTo(Array array, int index)
        {
        }

        public bool IsFixedSize
        {
            get { return false; }
        }

        public int Add(object value)
        {
            return 0;
        }

        public bool Contains(object value)
        {
            return false;
        }

        public int IndexOf(object value)
        {
            return 0;
        }

        public void Insert(int index, object value)
        {
        }

        public void Remove(object value)
        {
        }

        object IList.this[int index]
        {
            get { return 0; }
            set { }
        }

        bool IList.IsReadOnly
        {
            get { return false; }
        }

        bool IList.IsFixedSize
        {
            get { return false; }
        }

        int IList.Add(object value)
        {
            return 0;
        }

        bool IList.Contains(object value)
        {
            return false;
        }

        void IList.Clear()
        {
        }

        int IList.IndexOf(object value)
        {
            return 0;
        }

        void IList.Insert(int index, object value)
        {
        }

        void IList.Remove(object value)
        {
        }

        void IList.RemoveAt(int index)
        {
        }

        int ICollection.Count
        {
            get { return 0; }
        }

        object ICollection.SyncRoot
        {
            get { return 0; }
        }

        bool ICollection.IsSynchronized
        {
            get { return false; }
        }

        void ICollection.CopyTo(Array array, int index)
        {
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return null;
        }

        IEnumerator<T> IEnumerable<T>.GetEnumerator()
        {
            return null;
        }
    }
}
